DirectDosfenster haben eine Schnittstelle für externe Programme. Dazu sendet ein fremdes Programm mit der Kennung "TOOL" einen Aktionsrequest an ein oder alle DDFenster.
CDIR | ChangeDir |
INFO | Sendet Informationen zum betreffenden Fenster |
QUIT | Beende den Task |
REPO | REPOsitioniere Fenster nach (X-Y) mit der Größe (Weite,Höhe) |
WBRS | WB Refresh, der Task soll sein Fenster schließen und nach xx Ticks wieder öffnen |
Wie programmiert man so etwas?
Example: REPO {* Array[Long]: PositionArray,0,0,0,0*} {* Incblock: Puffer,100*} SendID=FindTask(0) DND_WhoIsOnline(&Puffer,100) Zeiger1==#Puffer Zeiger1->(DDFenster) While DDFenster#0 { Zeiger==#PositionArray (Left,Top,Width,Height)->Zeiger Result=DND_GiveData(DDFenster,0,>AktionTags:DND_SendTask,*SendID| DND_ID,"TOOL"| DND_Pointer,PositionArray| DND_Mode,"REPO"| Tag_Done,Null) TaskData==0 While TaskData##DND_Reply { While (Result=DND_Getdata(SendID))=-1 { Delay(10) } TaskData=.lDataStructure.Data(Result) DND_FreeData(Result) } } RTS
Example: QUIT {* Incblock: Puffer,100*} SendID=FindTask(0) DND_WhoIsOnline(&Puffer,100) Zeiger1==#Puffer Zeiger1->(DDFenster) While DDFenster#0 { Result=DND_GiveData(DDFenster,0,>AktionTags:DND_SendTask,*SendID| DND_ID,"TOOL"| DND_Mode,"QUIT"| Tag_Done,Null) TaskData==0 While TaskData##DND_Reply { While (Result=DND_Getdata(SendID))=-1 { Delay(10) } TaskData=.lDataStructure.Data(Result) DND_FreeData(Result) } } RTS
DirectDos & his Homepage designed by I.P.S. © 1999